<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>数组迭代方法</h1>
    <p>数组的迭代方法需要传入一个回调函数。</p>
    <p>调用迭代函数之后，系统会自动遍历，每次都去调用迭代函数中的回调函数，并将数据通过回调参数的形式参数传入。</p>
    <p>通常回调函数有三个参数：</p>
    <ol>
        <li>元素值</li>
        <li>索引值</li>
        <li>数组本身的引用</li>
    </ol>
    <ul>
        <li>forEach：遍历</li>
        <li>map: 加工生成新数组，新数组的成员由回调函数的结果构成</li>
    </ul>
    <script>
        let arr = [1,2,3,4];
        let sum = 0;
        arr.forEach(function(v,i,arr) {
            sum += v;
        })
        console.log("sum = ",sum);

        sum = 0;
        arr.forEach(function(v) {
            sum += v;
        })
        console.log("sum = ",sum);

        sum = 0;
        arr.forEach(v => sum += v);
        console.log("sum = ",sum);

        arr.forEach(function(v,i) {
            console.log(i, " = ", v);
        })

        // 生成一个新数组，由原有数组成员的2倍值构成
        let arrNew = arr.map(v => v * 2);
        console.log("arrNew = ",arrNew);

        arrNew = [];
        for (let v of arr) {
            arrNew.push(v * 2);
        }
        console.log("arrNew = ",arrNew);
    </script>
</body>
</html>